Saumya feature lifecycle cross module integration #270
Draft
Saumya-R wants to merge 2 commits into
Draft
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds lifecycle cross-module integration scaffolding across Rust/C++ scenario runners and Python FIT infrastructure, aiming to validate Launch Manager lifecycle behavior when integrated with other S-CORE modules (notably Persistency and State Manager) in daemon-supervised environments.
Changes:
- Introduces new lifecycle scenario groups for both Rust and C++ FIT scenario executables, adding lifecycle/health-monitoring client deps.
- Adds Python daemon fixture/helpers and lifecycle test utilities/configs to support running Launch Manager daemon during FITs.
- Updates Bazel test targets and documentation to reflect daemon-focused lifecycle FIT suites.
Reviewed changes
Copilot reviewed 19 out of 20 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pyproject.toml | Switches pytest config section to tool.pytest.ini_options; adds markers for daemon/manual/slow. |
| feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs | Registers lifecycle scenario group in Rust scenario root. |
| feature_integration_tests/test_scenarios/rust/src/scenarios/lifecycle/mod.rs | Adds lifecycle scenario group definition (Rust). |
| feature_integration_tests/test_scenarios/rust/src/scenarios/lifecycle/launch_manager_support.rs | Adds lifecycle-related Rust scenarios using lifecycle client + health monitoring APIs. |
| feature_integration_tests/test_scenarios/rust/BUILD | Adds lifecycle health/client deps to Rust scenarios build. |
| feature_integration_tests/test_scenarios/cpp/src/scenarios/mod.cpp | Registers lifecycle scenario group in C++ scenario root. |
| feature_integration_tests/test_scenarios/cpp/src/scenarios/lifecycle/launch_manager_support.h | Declares lifecycle-related C++ scenario factory functions. |
| feature_integration_tests/test_scenarios/cpp/src/scenarios/lifecycle/launch_manager_support.cpp | Implements lifecycle-related C++ scenarios (incl. lifecycle client usage). |
| feature_integration_tests/test_scenarios/cpp/BUILD | Adds lifecycle client dep to C++ scenarios build. |
| feature_integration_tests/test_cases/tests/lifecycle/test_lifecycle_state_manager_if.py | Adds daemon-based architectural interface test (Launch Manager ↔ State Manager). |
| feature_integration_tests/test_cases/tests/lifecycle/test_lifecycle_persistency_recovery.py | Adds persistency recovery test scaffolding (currently no active tests). |
| feature_integration_tests/test_cases/lifecycle_scenario.py | Adds helpers/base class for lifecycle FITs and Launch Manager config generation. |
| feature_integration_tests/test_cases/daemon_helpers.py | Adds Launch Manager daemon fixture, runfiles/bazel binary resolution, and flatbuffer config handling. |
| feature_integration_tests/test_cases/conftest.py | Adds --bazel-config and switches scenario build step to direct bazel build --config=.... |
| feature_integration_tests/test_cases/configs/daemon_launch_manager_config.json | Adds daemon Launch Manager JSON config template for config generation. |
| feature_integration_tests/test_cases/configs/BUILD | Exports daemon Launch Manager config JSON as a Bazel data file. |
| feature_integration_tests/test_cases/BUILD | Adds daemon_lifecycle_configs generation and new daemon-lifecycle FIT pytest targets/suites. |
| feature_integration_tests/README.md | Documents lifecycle FIT modes and run instructions (needs target-name corrections per review comments). |
| feature_integration_tests/LIFECYCLE_TESTS_SUMMARY.md | Adds lifecycle daemon cross-module test summary (needs status alignment per review comments). |
| feature_integration_tests/itf/test_lifecycle.py | Present as an empty file in this PR. |
Comments suppressed due to low confidence (1)
feature_integration_tests/test_cases/tests/lifecycle/test_lifecycle_persistency_recovery.py:87
test_lifecycle_persistency_recovery.pycurrently contains only helper code and no collected tests (the intended test class is removed/commented). This conflicts with the PR description and also means the suite isn't actually validating the Lifecycle ↔ Persistency recovery continuity scenario.
# Removed TestLifecyclePersistencyRecoveryContinuity class - requires supervised app recovery
# configuration not available in setcap mode
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
The created documentation from the pull request is available at: docu-html |
d93b7dd to
496662a
Compare
Comment on lines
+14
to
+22
| Cross-module integration test: lifecycle recovery continuity with persistency state. | ||
|
|
||
| The test exercises an end-to-end flow where: | ||
| 1. Persistency data is written using the FIT scenario executable. | ||
| 2. A supervised lifecycle application is force-killed to trigger recovery. | ||
| 3. Persistency data is written/read again in the same storage directory. | ||
|
|
||
| This verifies that lifecycle recovery activity does not break persistency | ||
| storage continuity for colocated workloads in the integration environment. |
Comment on lines
+204
to
+209
| # Step 4: Verify both snapshots are intact | ||
| all_snapshots = sorted(kvs_dir.glob("kvs_1_*.json")) | ||
| assert len(all_snapshots) > 0, "No snapshots found after recovery simulation" | ||
|
|
||
| # Verify the most recent snapshot | ||
| verify_kvs_snapshot_hash(kvs_dir, instance_id=1, snapshot_id=0) |
Comment on lines
+334
to
+337
| # Phase 2: Simulate crash by terminating first process | ||
| # (process already terminated after scenario execution) | ||
| # In a real supervised scenario, Launch Manager would detect crash and restart | ||
|
|
Comment on lines
+14
to
+22
| Architectural interface test: Launch Manager <-> State Manager | ||
| Control Interface (activate_target) | ||
|
|
||
| Verifies that external ECU logic (here represented by a direct IPC call into | ||
| the Launch Manager control interface) can: | ||
| - Query the current run-target status | ||
| - Request a run-target transition via activate_target | ||
| - Receive confirmation that the transition was performed | ||
|
|
Comment on lines
+35
to
+45
| import json | ||
| import os | ||
| import subprocess | ||
| import time | ||
| from pathlib import Path | ||
| from typing import Any | ||
|
|
||
| import pytest | ||
| from daemon_helpers import launch_manager_daemon | ||
| from lifecycle_scenario import add_supervised_component | ||
| from test_properties import add_test_properties |
adding feature integration test cases for other requirements removing hard fail conditions updated documents adding copilot reivew fixes Fixed restart behavior on the same instance, Hardened shutdown race handling updated the statement clearing self.process after shutdown fixed pytest build environment issues fixxing the python build issues Adding test cases for cross module integration cleaning the redundant test cases test_lifecycle_persistency_recovery.py scaffolding removed and implemented test verifies continuity across supervised app crashes for persistency Updated the docstring to accurately reflect the implementation , Removed the problematic chmod operations on user's home directory Incorrect Run Targets in Docstring. Unused control_socket Variable adding copyright fixes
496662a to
bc547fd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cross-module integration tests verify that lifecycle management integrates correctly with other S-CORE modules in end-to-end scenarios: